%script que simula el control sobre la temperatura del a habitacion
%parte de una temperatura inicial y de acuerdo a reglas establecidas
%va progresando, tratanto de mantener la temperatura entre 20 y 22�

Ti = 20; %temperatura interna comienza en 20�
Te = 20; %temperatura externa comienza en 20�
Tr = 20; %temperatura referencia comienza en 20�
T = 15; %periodo de muestreo [s]
tFinal = 1*60*60; %duracion de seis horas, medido en [s]
%tFinal = 620;
prob_puerta = T/(tFinal); %probabilidad de apertura de la puerta             <-----
n = 1; %indice
time = [0]; %vector de tiempos
i = [0]; %corriente que circula por la resistencia calefactora 
v = [0]; %tension aplicada al refrigerador

sets;

for t=T:T:tFinal
    n = n+1;
    x = Ti(n-1)-Tr(n-1);
    FAM_Control;
    i = [i,iFAM];
    v = [v,vFAM];
    Te = [Te, externalTemperature(t)];
    Tr = [Tr, referenceTemperature(t)];
    a = randi(1/prob_puerta); % numero entero entre [1,1/prob_puerta]
    if(mod(a,1/prob_puerta)==0) %la puerta esta abierta
        newTi = 0.169*Ti(n-1) + 0.831*Te(n) + 0.112*i(n)^2 - 0.002*v(n);
        disp('Se abrió la puerta');
    else
        newTi = 0.912*Ti(n-1) + 0.088*Te(n) + 0.604*i(n)^2 - 0.0121*v(n);
    end
    Ti = [Ti,newTi];
    time = [time,t];
end
figure(1);
plot(time,Te,time,Ti,time,Tr)
legend('temp externa','temp interna','temp deseada')
